iT邦幫忙

2026 iThome 鐵人賽

DAY 3
0
Software Development

AI 時代的 Android Engineer:30 天打造我的 AI 開發工作流系列 第 3

Day 03 - AI 會先讀 Code,但它真的理解需求了嗎?

  • 分享至 

  • xImage
  •  

昨天最後留下了一個問題:

如果我只給 AI 一句需求,不告訴它應該怎麼分析,它會直接開始寫 Code,還是會先搞懂自己到底要改什麼?

所以今天決定真的來試一次。

先簡單介紹一下這次拿來測試的 App

這是一個我之前做的時間管理 App,其中一個功能是讓使用者在專注時使用番茄鐘計時。

原本的番茄鐘功能已經可以正常使用,包含開始、暫停、倒數計時,以及離開畫面後繼續計時等基本功能。

其實當初開發時,我也有預留「正計時」的畫面。UI 上可以在「番茄鐘」和「正計時」之間切換,只是正計時的邏輯一直沒有完成,所以後來直接把這個切換功能隱藏起來,使用者只會看到已經完成的番茄鐘。

也就是說,這次不是要 AI 從零做一個 Stopwatch,而是把原本預留的 UI 接上真正的正計時邏輯,再把原本隱藏的切換功能打開。

我刻意只給它一個很簡單的需求:

幫我加入正計時功能,進入畫面後從 00:00 開始計時,每秒增加 1 秒,並即時顯示目前經過的時間。

我沒有告訴 AI 要怎麼實作,也沒有指定要修改哪些檔案,更沒有提醒它「請先分析再開始寫」,因為我想看的就是它收到需求後最自然的反應。

它真的有先讀 Code

AI 沒有馬上寫一套新的 Timer,而是先找出相關畫面和既有的計時邏輯,接著發現 Project 裡其實已經有 Stopwatch、TimeManagerTimeService,所以決定沿用原本的計時方式。

它甚至注意到 Stopwatch 放在 ViewPager 裡,如果直接在 Fragment 建立時啟動,可能會因為 ViewPager 預先建立頁面而提早開始計時,所以最後選擇在畫面進入 onResume() 時自動開始。

到這裡其實滿符合我原本想測的事情。它不是看到「正計時」就直接生出 delay() 和計數器,而是先看 Project 已經怎麼做,再決定修改方式。最後它也執行了 compileDebugKotlin,確認修改後可以正常編譯。

如果實驗停在這裡,我大概會得到一個很簡單的結論:

AI 確實會先理解既有 Code,再開始修改。

但真正把 App 跑起來之後,事情就沒有這麼單純了。

正計時會動,但原本的功能開始變奇怪

單獨進入 Stopwatch 時,正計時確實會從 00:00 開始增加,看起來需求已經完成。但實際跟原本的番茄鐘一起操作後,很快就發現兩邊開始互相影響。

回頭看 Code 才發現,Pomodoro 和 Stopwatch 並不是兩套完全獨立的計時器。它們背後共用了同一個 TimeManager,再透過 Mode 區分目前是 POMODOROBREAK 還是 STOPWATCH,畫面也會觀察同一套計時資料。

所以當 AI 決定「進入 Stopwatch 就呼叫 startStopWatch()」時,它其實不只是讓正計時開始,而是在改變同一套計時機制目前正在做的事情。

結果就是番茄鐘原本應該顯示倒數時間,實際操作後卻可能受到正計時影響。從其他 Fragment 回來後,原本的計時還會繼續,但再次切換到 Stopwatch 時,又可能重新觸發啟動邏輯,讓計時重新從 0 開始。

這些問題都沒有在 Compile 時出現,因為 Code 本身完全可以編譯,真正有問題的是使用者開始操作不同功能之後的行為。

AI 有理解,但也替我補了很多沒說出口的需求

這時候我才注意到,AI 其實在修改過程中做了不少我沒有要求的決定。

例如原本畫面的時間格式是 00:00:00,我的需求寫「從 00:00 開始」,AI 沒有確認這代表「從零開始」還是「我要修改顯示格式」,而是直接把未滿一小時的顯示改成 MM:SS

另外,我說的是「進入畫面後從 00:00 開始計時」,AI 也直接解讀成「切換到 Stopwatch ViewPager 就自動開始」。但我原本也有留下 Start 按鈕,所以另一種完全合理的理解,其實是進入畫面先顯示 00:00,等使用者按下 Start 才開始計時。

更重要的是,既然 Pomodoro 和 Stopwatch 共用同一套計時機制,那麼其中一個正在計時時,使用者能不能開啟另一個?需要先停止目前的計時嗎?另一個功能是不是應該暫時不能操作?這些已經比較接近功能規則,但 AI 沒有停下來確認,而是直接選擇了一種做法。

找到相關 Code,不一定等於理解這次改動

所以昨天的問題其實有答案了。AI 並不是收到需求就馬上開始寫,它真的會先 Search、讀既有實作,甚至考慮 Lifecycle 和既有架構。

但今天實際跑完後,我覺得「有沒有先讀 Code」可能還不是最重要的判斷方式。

找到正確的 Code,不一定代表理解這次修改會影響什麼。

這次 AI 知道 Stopwatch 怎麼開始,也知道應該沿用 TimeManager,但它沒有完整處理 Stopwatch 和原本 Pomodoro 之間的關係。最後 Code 可以 Build,單獨看新功能也可以跑,整個操作流程卻還是出現問題。

所以今天想再替自己的 Workflow 留下一條:

不要用 Code 能不能 Build,判斷 AI 有沒有真的理解需求。

昨天在想的是「我怎麼確認自己真的理解 AI 解釋的 Code」,今天則反過來變成「我怎麼確認 AI 真的理解我要它改的東西」。

而下一個問題也因此出現了:

哪些地方 AI 可以根據 Code 自己推論,哪些地方應該停下來問我?

這題就留到下一次繼續試試看。

下一集見 :)


上一篇
Day 02 - AI 解釋得越詳細,我真的就越懂 Android 嗎?
系列文
AI 時代的 Android Engineer:30 天打造我的 AI 開發工作流3
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言